# Based on https://github.com/jaegertracing/jaeger-kubernetes/blob/master/all-in-one/jaeger-all-in-one-template.yml

#
# Copyright 2017-2019 The Jaeger Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
# in compliance with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed under the License
# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
# or implied. See the License for the specific language governing permissions and limitations under
# the License.
#

apiVersion: v1
kind: List
items:
  - apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: jaeger
      namespace: {{ .Namespace }}
      labels:
        app: jaeger
        app.kubernetes.io/name: jaeger
        app.kubernetes.io/component: all-in-one
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: jaeger
      strategy:
        type: Recreate
      template:
        metadata:
          labels:
            app: jaeger
            app.kubernetes.io/name: jaeger
            app.kubernetes.io/component: all-in-one
          annotations:
            prometheus.io/scrape: "true"
            prometheus.io/port: "16686"
        spec:
          containers:
            -   env:
                  - name: COLLECTOR_ZIPKIN_HOST_PORT
                    value: "9411"
                  - name: COLLECTOR_OTLP_ENABLED
                    value: "true"
                image: jaegertracing/all-in-one:1.42.0
                name: jaeger
                ports:
                  - containerPort: 5775
                    protocol: UDP
                  - containerPort: 6831
                    protocol: UDP
                  - containerPort: 6832
                    protocol: UDP
                  - containerPort: 5778
                    protocol: TCP
                  - containerPort: 16686
                    protocol: TCP
                  - containerPort: 9411
                    protocol: TCP
                  - containerPort: 4317
                    protocol: TCP
                  - containerPort: 4318
                    protocol: TCP
                readinessProbe:
                  httpGet:
                    path: "/"
                    port: 14269
                  initialDelaySeconds: 5
  - apiVersion: v1
    kind: Service
    metadata:
      name: jaeger-query
      namespace: {{ .Namespace }}
      labels:
        app: jaeger
        app.kubernetes.io/name: jaeger
        app.kubernetes.io/component: query
    spec:
      ports:
        - name: query-http
          port: 80
          protocol: TCP
          targetPort: 16686
      selector:
        app.kubernetes.io/name: jaeger
        app.kubernetes.io/component: all-in-one
      type: ClusterIP
  - apiVersion: v1
    kind: Service
    metadata:
      name: jaeger-collector
      namespace: {{ .Namespace }}
      labels:
        app: jaeger
        app.kubernetes.io/name: jaeger
        app.kubernetes.io/component: collector
    spec:
      ports:
        - name: jaeger-collector-tchannel
          port: 14267
          protocol: TCP
          targetPort: 14267
        - name: jaeger-collector-http
          port: 14268
          protocol: TCP
          targetPort: 14268
        - name: jaeger-collector-zipkin
          port: 9411
          protocol: TCP
          targetPort: 9411
        - name: grpc-otlp
          port: 4317
          protocol: TCP
          targetPort: 4317
        - name: http-otlp
          port: 4318
          protocol: TCP
          targetPort: 4318
      selector:
        app.kubernetes.io/name: jaeger
        app.kubernetes.io/component: all-in-one
      type: ClusterIP
  - apiVersion: v1
    kind: Service
    metadata:
      name: jaeger-agent
      namespace: {{ .Namespace }}
      labels:
        app: jaeger
        app.kubernetes.io/name: jaeger
        app.kubernetes.io/component: agent
    spec:
      ports:
        - name: agent-zipkin-thrift
          port: 5775
          protocol: UDP
          targetPort: 5775
        - name: agent-compact
          port: 6831
          protocol: UDP
          targetPort: 6831
        - name: agent-binary
          port: 6832
          protocol: UDP
          targetPort: 6832
        - name: agent-configs
          port: 5778
          protocol: TCP
          targetPort: 5778
      clusterIP: None
      selector:
        app.kubernetes.io/name: jaeger
        app.kubernetes.io/component: all-in-one
  - apiVersion: v1
    kind: Service
    metadata:
      name: zipkin
      namespace: {{ .Namespace }}
      labels:
        app: jaeger
        app.kubernetes.io/name: jaeger
        app.kubernetes.io/component: zipkin
    spec:
      ports:
        - name: jaeger-collector-zipkin
          port: 9411
          protocol: TCP
          targetPort: 9411
      clusterIP: None
      selector:
        app.kubernetes.io/name: jaeger
        app.kubernetes.io/component: all-in-one
